package com.spice.common.constant;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class PermissionConstant {
    /**
     * 本项目有4种权限级别：**超级管理员、总监、专员、 成员**；2个部门：**产品中心，质量中心**。
     * 权限级别介绍：
     * 1. **超级管理员：**
     * 超级管理员有且仅有一个，拥有所有权限，可以修改任何数据和赋予其他用户任何权限。
     * 2. **部门总监：**
     * 受超级管理员的任命，拥有该**部门所有权限**。
     * 3. **部门专员：**
     * 受超级管理员的任命，拥有该**部门部分权限**。
     * 4. **成员：**
     * 注册账号后的默认权限，没有任何管理权限。
     * 超级管理员权限
     */
    public static final String PRODUCT_CENTER = "product_center";
    public static final String QUALITY_CENTER = "quality_center";
    public static final String NO_DEPARTMENT = "none";

    /**
     * 部门角色分隔符
     */
    public static final String ROLE_SEPARATOR = ":";
    /**
     * 权限级别
     */
    public static final String ROOT = "root";
    public static final String DIRECTOR = "director";
    public static final String WORKER = "worker";
    public static final String USER = "user";

    // 超级管理员
    public static final String ROOT_ROLE = NO_DEPARTMENT + ROLE_SEPARATOR + ROOT;
    // 产品中心总监
    public static final String PRODUCT_CENTER_DIRECTOR_ROLE =
            PRODUCT_CENTER + ROLE_SEPARATOR + DIRECTOR;
    // 产品中心专员
    public static final String PRODUCT_CENTER_WORKER_ROLE =
            PRODUCT_CENTER + ROLE_SEPARATOR + WORKER;
    // 质量中心总监
    public static final String QUALITY_CENTER_DIRECTOR_ROLE =
            QUALITY_CENTER + ROLE_SEPARATOR + DIRECTOR;
    // 质量中心专员
    public static final String QUALITY_CENTER_WORKER_ROLE =
            QUALITY_CENTER + ROLE_SEPARATOR + WORKER;
    // 成员
    public static final String USER_ROLE = NO_DEPARTMENT + ROLE_SEPARATOR + USER;
    /**
     * 表格名称
     * 1. 原料外形描述表
     * 2. 原料营养成分表
     * 3. 原料配料展开表
     * 4. 原料批次入场检验表
     * 5. 产品包装维护信息表
     * 6. 产品维护档案表
     * 7. 原料科研表
     */
    public static final String SHAPE_DESC = "shape_desc";
    public static final String NUTRITION_CONTAIN = "nutrition_contain";
    public static final String INGREDIENT = "ingredient";
    public static final String SOURCE_CHECK = "source_check";
    public static final String PACK_MAINTAIN = "pack_maintain";
    public static final String PRODUCT_MAINTAIN = "product_maintain";
    public static final String FLOWER_CHILI_STUDY = "flower_chili_study";
    public static final String CHILI_STUDY = "chili_study";

    /**
     * 文档名称
     * 1. 学习资料文档
     * 2. 科研报告文档
     */
    public static final String LEARNING_MATERIALS_DOC = "learning_materials_doc";
    public static final String SCIENTIFIC_RESEARCH_DOC = "scientific_research_doc";


    /**
     * 权限
     * 表格的所有权限包含：查看权限、编辑权限、备份权限、备份管理权限
     * 文档的所有权限包含：查看权限、编辑权限
     */
    public static final String VIEW_PERMISSION = "view";
    public static final String EDIT_PERMISSION = "edit";
    public static final String BACKUP_PERMISSION = "backup";
    public static final String BACKUP_MANAGEMENT_PERMISSION = "backup_management";

    /**
     * 权限分隔符
     */
    public static final String PERMISSION_SEPARATOR = ":";


    /**
     * 角色列表
     */
    public static final String[] ROLE_LIST =
            new String[]{ROOT_ROLE,
                    PRODUCT_CENTER_DIRECTOR_ROLE,
                    PRODUCT_CENTER_WORKER_ROLE,
                    QUALITY_CENTER_DIRECTOR_ROLE,
                    QUALITY_CENTER_WORKER_ROLE,
                    USER_ROLE};

    /**
     * 表格类型列表
     */
    public static final String[] TABLE_TYPE_LIST =
            new String[]{NUTRITION_CONTAIN,
                    SHAPE_DESC,
                    SOURCE_CHECK,
                    INGREDIENT,
                    PACK_MAINTAIN,
                    PRODUCT_MAINTAIN,
                    FLOWER_CHILI_STUDY,
                    CHILI_STUDY};

    /**
     * 表格权限列表
     */
    public static final String[] TABLE_PERMISSION_LIST =
            new String[]{VIEW_PERMISSION,
                    EDIT_PERMISSION,
                    BACKUP_PERMISSION,
                    BACKUP_MANAGEMENT_PERMISSION};

    /**
     * 文档类型列表
     */
    public static final String[] DOC_TYPE_LIST =
            new String[]{LEARNING_MATERIALS_DOC,
                    SCIENTIFIC_RESEARCH_DOC};

    /**
     * 文档权限列表
     */
    public static final String[] DOC_PERMISSION_LIST =
            new String[]{VIEW_PERMISSION,
                    EDIT_PERMISSION};

}
